#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<sys/wait.h>

void swap(char **a,char **b)
{
	char *tmp=*a;
	*a=*b;
	*b=tmp;
}

int main(int argc,char*argv[])
{
	pid_t id;
	while(1)
	{
		printf("[wpbfcr@localhost shell$ ] ");
		fflush(stdout);
		char my_buf[1024];
		memset(my_buf,'\0',sizeof(my_buf));
		char *my_argv[32];
		ssize_t size=read(0,my_buf,sizeof(my_buf)-1);
		if(size>0)
		{
			my_buf[size-1]='\0';
		}
		if(my_buf[0]=='\n')
		{
			continue;
		}
		int j=0;
		int i=strlen(my_buf)-1;
		while(--i>0)
		{
			if(my_buf[i]==' ')
			{
				my_argv[j++]=&my_buf[i+1];
			//	my_buf[i]='\0';
			}
		}
		if(my_buf[0]!=' ')
		{
			my_argv[j]=my_buf;
			my_argv[j+1]='\0';
     	}
		 i=0;
		int k=j-1;
		while(i<k)
		{
			swap(&my_argv[i--],&my_argv[j--]);
		}
		id =vfork();
		if(id<0)
		{
			perror("vfork");
		}
		else if(id==0)
		{
			execvp(my_argv[0],my_argv);
			exit(1);		
		}
		else
		{
			pid_t _wait_id=waitpid(id,NULL,0);
			if(_wait_id==id)
			{
					;
			}
		}
		return 0;
	}

}
